SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Proc [dbo].[SP_TXMVTO_CNTB_I12]
/*---------------------------------------------------------------------*/          
/*----- Empresa          : OFISIS S.A.                            -----*/          
/*----- Cliente          : OFISIS S.A.                            -----*/          
/*----- Sistema          : Contabilidad                           -----*/          
/*----- Modulo           : Administracion                         -----*/          
/*----- Programa         : Apertura Anual                         -----*/          
/*----- Nombre           : SP_TXMVTO_CNTB_I12                     -----*/          
/*----- Script           : TXMVTO_CNTB                            -----*/          
/*----- Desarrollado     : Franco Gamboni Koifman                 -----*/          
/*----- Fecha            : 11/11/1996                             -----*/          
/*----- Base de Datos    : MS SQL Server                          -----*/          
/*----- Version BD       : 6.5                                    -----*/          
/*----- Invoca a SP      : SP_TXMVTO_CNTB_I13                     -----*/          
/*---------------------------------------------------------------------*/          
/*---------------------------------------------------------------------*/          
/*----- Modificado 1 por : percy garcia                           -----*/          
/*----- Fecha Modifica   : 05/06/2004                             -----*/          
/*----- Detalle Modifica : usuario creacion y modif               -----*/          
/*---------------------------------------------------------------------*/          
/*---------------------------------------------------------------------*/        
/*----- Modificado 3 por : PDGV                                   -----*/        
/*----- Fecha Modifica   : 20/01/2005                             -----*/        
/*----- Detalle Modifica : APERTURA POR UNIDAD                    -----*/        
/*---------------------------------------------------------------------*/        
/*---------------------------------------------------------------------*/        
/*----- Modificado 3 por : PDGV                                   -----*/        
/*----- Fecha Modifica   : 25/04/2006                             -----*/        
/*----- Detalle Modifica : Al select que saca los saldos se le comento 
"And T2.CO_ORDE_SERV IS NULL                     "
para que saque correctamente los saldos -----*/        
/*---------------------------------------------------------------------*/        
/*---------------------------------------------------------------------*/          
/*----- Comentarios      : Todas las cuentas menores que la 59    -----*/          
/*-----                    que tengan Auxiliar pero sin documento -----*/          
/*---------------------------------------------------------------------*/          
/*---------------------------------------------------------------------*/          
/*----- Drop Proc SP_TXMVTO_CNTB_I12                              -----*/          
/*----- Grant Execute On SP_TXMVTO_CNTB_I12 To PUBLIC             -----*/          
/*----- SP_TXMVTO_CNTB_I12                                        -----*/          
/*---------------------------------------------------------------------*/          
       
@ISCO_EMPR  TD_VC_002,          
@ISCO_USUA          TD_VC_008,
@IDFE_USUA          TD_DT_001,
@INNU_CNTB_EMPR  TD_IN_001,          
@INNU_ANNO_CIER   TD_IN_004_ANNO,          
@INNU_MESE_CIER  TD_IN_002_MESE,          
@INNU_ANNO_APER  TD_IN_004_ANNO,          
@INNU_MESE_APER  TD_IN_002_MESE,          
@ISCO_UNID_CNTB         TD_VC_003,          
@ISCO_UNID_FILT  TD_VC_003,     
@ISCO_OPRC_CNTB         TD_VC_003,          
@ISNU_ASTO  TD_VC_010,          
@INNU_SECU              TD_IN_001,          
@INNU_SIZE              TD_IN_001,       
@IDFE_ASTO_CNTB         TD_DT_001,     
@ISTI_FILT       TD_VC_001, -- 'T' TODAS LAS UNID. 'P' FILTRO POR UNIDAD     
@ISTI_GENE_ASTO  TD_VC_003  -- 'ING'  UNIDAD INGRESADA 'ORI' UNIDAD ORIGEN      

As          
 Declare           
  @CSCO_UNID_CNTB       TD_VC_003,            
  @VSCO_UNID_CNTB       TD_VC_003,            
  @CSCO_CNTA_EMPR       TD_VC_020_CNTA,          
  @VNTO_CARG_MESE       TD_NU_016_004,           
  @VNTO_ABON_MESE       TD_NU_016_004,          
  @CSTI_MONE            TD_VC_003,           
  @VSTI_OPER            TD_VC_003,          
  @VNNU_SECU            TD_IN_002,          
  @CNIM_MVTO_CNTB       TD_NU_016_004,          
  @CNIM_MVTO_ORIG       TD_NU_016_004,          
  @VNFA_CAMB            TD_NU_015_006,          
  @VSCO_MONE_CNTB       TD_VC_003,          
  @CSTI_AUXI_EMPR       TD_VC_001,          
  @CSCO_AUXI_EMPR       TD_VC_020,  
  @VSCO_UNID_ORIG       TD_VC_003,            
  @VSCO_UNID_EVAL       TD_VC_003             
          
If @ISTI_GENE_ASTO = 'ING'        
 Begin     
 Declare CU_TXMVTO_CNTB_I12_1 cursor          
 For          
  Select NULL, T1.CO_CNTA_EMPR, MAX(T1.CO_MONE),           
  Isnull(Sum(Isnull(T2.IM_CARG_CNTB, 0)), 0) - Isnull(Sum(Isnull(T2.IM_ABON_CNTB, 0)), 0),          
  Isnull(Sum(Isnull(T2.IM_CARG_ORIG, 0)), 0) - Isnull(Sum(Isnull(T2.IM_ABON_ORIG, 0)), 0),          
  T2.TI_AUXI_EMPR, T2.CO_AUXI_EMPR          
  From  TMPLAN_EMPR T1, TASALD_EMPR T2          
  Where T2.CO_EMPR = @ISCO_EMPR                  
  And T2.NU_CNTB_EMPR = @INNU_CNTB_EMPR     
  And  ((@ISTI_FILT = 'T') Or (@ISTI_FILT = 'P' And t2.CO_UNID_CNTB = @ISCO_UNID_FILT))     
  And T2.NU_ANNO      = @INNU_ANNO_CIER     
  And T2.NU_MESE      < @INNU_MESE_CIER     
  AND  Substring(T1.CO_CNTA_EMPR,1,1) < '6'    
  And DataLength(Rtrim(T1.CO_CNTA_EMPR)) = @INNU_SIZE     
  And T1.ST_CNTA_CTES = 'AUX'     
  And T1.NU_ANNO = 9999        
  AND T2.CO_EMPR = T1.CO_EMPR              
  And T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR     
  And T2.TI_AUXI_EMPR IS NOT NULL           
  And T2.CO_AUXI_EMPR IS NOT NULL           
  group by T1.CO_CNTA_EMPR,T2.TI_AUXI_EMPR, T2.CO_AUXI_EMPR          
  Order by T1.CO_CNTA_EMPR,T2.TI_AUXI_EMPR, T2.CO_AUXI_EMPR          
End  
  
If @ISTI_GENE_ASTO = 'ORI'        
 Begin     
 Declare CU_TXMVTO_CNTB_I12_1 cursor          
 For          
  Select t2.CO_UNID_CNTB, T1.CO_CNTA_EMPR, MAX(T1.CO_MONE), 
   Isnull(Sum(Isnull(T2.IM_CARG_CNTB, 0)), 0) - Isnull(Sum(Isnull(T2.IM_ABON_CNTB, 0)), 0), 
   Isnull(Sum(Isnull(T2.IM_CARG_ORIG, 0)), 0) - Isnull(Sum(Isnull(T2.IM_ABON_ORIG, 0)), 0), 
   T2.TI_AUXI_EMPR, T2.CO_AUXI_EMPR 
  From  TMPLAN_EMPR T1 
    Left Outer Join TASALD_EMPR T2 
    On T2.CO_EMPR = T1.CO_EMPR 
    And T2.NU_CNTB_EMPR = @INNU_CNTB_EMPR 
    And  ((@ISTI_FILT = 'T') Or (@ISTI_FILT = 'P' And t2.CO_UNID_CNTB = @ISCO_UNID_FILT)) 
    And T2.NU_ANNO      = @INNU_ANNO_CIER 
    And T2.NU_MESE      < @INNU_MESE_CIER 
    And T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR 
    And T2.TI_AUXI_EMPR IS NOT NULL 
    And T2.CO_AUXI_EMPR IS NOT NULL 
  Where T1.CO_EMPR = @ISCO_EMPR 
  AND  Substring(T1.CO_CNTA_EMPR,1,1) < '6' 
  And DataLength(Rtrim(T1.CO_CNTA_EMPR)) = @INNU_SIZE 
  And T1.ST_CNTA_CTES = 'AUX' 
  And T1.NU_ANNO = 9999 
  group by t2.CO_UNID_CNTB, T1.CO_CNTA_EMPR,T2.TI_AUXI_EMPR, T2.CO_AUXI_EMPR 
  Order by t2.CO_UNID_CNTB, T1.CO_CNTA_EMPR,T2.TI_AUXI_EMPR, T2.CO_AUXI_EMPR 
End  
          
   Select @VSCO_MONE_CNTB = CO_MONE          
   from TTCNTB_EMPR          
   where CO_EMPR = @ISCO_EMPR          
    and NU_CNTB_EMPR = @INNU_CNTB_EMPR          
          
 Open CU_TXMVTO_CNTB_I12_1          
 Fetch CU_TXMVTO_CNTB_I12_1 Into @CSCO_UNID_CNTB, @CSCO_CNTA_EMPR, @CSTI_MONE,   
 @CNIM_MVTO_CNTB, @CNIM_MVTO_ORIG, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR          
          
 Select @VNNU_SECU = @INNU_SECU          
           
 While @@Fetch_status = 0          
  Begin   
  
    --- SI INGRESA UNA UNIDAD DONDE GRABAR ASTO    
    If IsNull(Rtrim(@ISCO_UNID_CNTB), '') != ''    
      Begin       
       Select @VSCO_UNID_CNTB = @ISCO_UNID_CNTB      
      End       
    Else       
      Begin       
       Select @VSCO_UNID_CNTB = @CSCO_UNID_CNTB      
      End     
  
    --- SETEA UNIDAD ORIGEN    
    If @ISTI_GENE_ASTO = 'ORI'        
      Begin         
         Select @VSCO_UNID_ORIG = @CSCO_UNID_CNTB       
  
         If @VSCO_UNID_EVAL IS NULL Or @CSCO_UNID_CNTB != @VSCO_UNID_EVAL  
         Begin   
         Select @VNNU_SECU = IsNull(Max(NU_SECU), 0) + 1    
         From TXMVTO_CNTB     
         Where CO_EMPR = @ISCO_EMPR     
       And NU_CNTB_EMPR = @INNU_CNTB_EMPR     
         And CO_UNID_CNTB = @CSCO_UNID_CNTB     
         And CO_OPRC_CNTB = @ISCO_OPRC_CNTB     
         And NU_ANNO = @INNU_ANNO_APER     
         And NU_MESE = @INNU_MESE_APER            
  
         Select @VSCO_UNID_EVAL = @CSCO_UNID_CNTB  
         End   
  
      End            
          
      If @CNIM_MVTO_CNTB IS NULL          
       Select @CNIM_MVTO_CNTB = 0.00          
             
      If @CNIM_MVTO_ORIG IS NULL               
         Select @CNIM_MVTO_ORIG  = 0.00          
          
      If @CNIM_MVTO_ORIG != 0.00 or @CNIM_MVTO_CNTB != 0.00          
        Begin          
          If @CSTI_MONE != @VSCO_MONE_CNTB          
            Begin              
              If @CNIM_MVTO_ORIG != 0.00          
                Select @VNFA_CAMB = ROUND(@CNIM_MVTO_CNTB / @CNIM_MVTO_ORIG,3)          
              Else          
                Begin           
                  Select @VNFA_CAMB = 1.00          
                End           
            End          
          Else          
            Begin          
             Select @VNFA_CAMB = 1.00                       
             Select @CNIM_MVTO_ORIG = @CNIM_MVTO_CNTB          
            End          
             
         If @CNIM_MVTO_ORIG > 0.00          
           If @CNIM_MVTO_CNTB > 0.00          
             Select @VSTI_OPER = 'CAR'  /*--- Si es positivo se debe poner negativo ---*/        
           ELSE          
             Select @VSTI_OPER = 'ABO'  /*--- Si es negativo se debe poner positivo ---*/          
         Else          
           If @CNIM_MVTO_CNTB <  0.00          
             Select @VSTI_OPER = 'ABO'  /*--- Si es negativo se debe poner positivo ---*/          
           ELSE          
             Select @VSTI_OPER = 'CAR'  /*--- Si es positivo se debe poner negativo ---*/          
          
        Insert Into TXMVTO_CNTB          
         (CO_EMPR,NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,          
          NU_MESE,NU_ASTO,NU_SECU,FE_ASTO_CNTB,CO_CNTA_EMPR,TI_AUXI_EMPR,          
          CO_AUXI_EMPR,TI_DOCU,NU_DOCU,FE_DOCU,FE_DOCU_VENC, TI_CAMB,CO_MONE,FA_CAMB,FA_CAMB_DIAR,          
          TI_OPER,IM_MVTO_ORIG,IM_MVTO_CNTB,DE_GLOS,TI_DOCU_REFE,NU_DOCU_REFE,FE_DOCU_REFE,          
          NO_GIRA,CO_ORDE_SERV,SI_MVTO_CNTB,CO_UNID_ORIG,          
          CO_OPRC_ORIG,NU_ASTO_ORIG,ST_OTRS, ST_GEST, ST_REDO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA)          
        Values          
         (@ISCO_EMPR, @INNU_CNTB_EMPR, @VSCO_UNID_CNTB, @ISCO_OPRC_CNTB,           
          @INNU_ANNO_APER, @INNU_MESE_APER, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB,           
          @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, NULL, NULL, NULL, NULL, 'PAC',           
          @CSTI_MONE, Abs(@VNFA_CAMB), Abs(@VNFA_CAMB), @VSTI_OPER, Abs(@CNIM_MVTO_ORIG),           
          Abs(@CNIM_MVTO_CNTB), 'ASIENTO DE APERTURA', NULL, NULL, NULL, NULL, NULL, 'APR',           
          @VSCO_UNID_ORIG, NULL, NULL,   
          NULL, 'N', 'N', @ISCO_USUA , @IDFE_USUA, @ISCO_USUA,@IDFE_USUA)          

          /*--- Incrementa el contador de registros ---*/        
          Select @VNNU_SECU = @VNNU_SECU + 1          
         End          
          
     Fetch CU_TXMVTO_CNTB_I12_1 Into @CSCO_UNID_CNTB, @CSCO_CNTA_EMPR, @CSTI_MONE,@CNIM_MVTO_CNTB, @CNIM_MVTO_ORIG,           
          @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR          
     
   End          
 Close CU_TXMVTO_CNTB_I12_1          
 Deallocate CU_TXMVTO_CNTB_I12_1          
          
 exec SP_TXMVTO_CNTB_I13 @ISCO_EMPR, @ISCO_USUA, @IDFE_USUA, @INNU_CNTB_EMPR, @INNU_ANNO_CIER, @INNU_MESE_CIER,     
 @INNU_ANNO_APER, @INNU_MESE_APER, @ISCO_UNID_CNTB, @ISCO_UNID_FILT, @ISCO_OPRC_CNTB,           
 @ISNU_ASTO, @VNNU_SECU, @INNU_SIZE, @IDFE_ASTO_CNTB, @ISTI_FILT, @ISTI_GENE_ASTO      
Return          
/*--------------------------- Fin ---------------------------------*/   

GO
